﻿namespace Engine.Graphics
{
    public interface IMaterial
    {
        #region Public Properties

        /// <summary>
        /// renderorder in scenemanager. lower ints will draw first.
        /// </summary>
        int MappingMode { get; set; }

        #endregion Public Properties

        #region Public Methods

        uint GetMaterialHashCode();

        /// <summary>
        /// all used texture-filenames of the material must returnd in string-array.
        /// When no texture-filenames aren´t returned, no textures will loaded in materialmanager.
        /// </summary>
        /// <returns></returns>
        string[] GetUsedTextureNames();

        void SaveToStream(System.IO.BinaryWriter bw);

        string ToXml(System.Xml.XmlTextWriter sw);

        #endregion Public Methods
    }
}